package com.xxxx.yoyo.service;

import java.util.List;

import com.xxxx.yoyo.bean.Goods;
import com.xxxx.yoyo.bean.Order;

public interface IOrderService {

	/**
	 * 把宠物加入到虚拟订单中
	 * @param goods 购买的宠物
	 * @param order 虚拟订单
	 */
	void addGoodsToOrder(Goods goods, Order order);
	
	/**
	 * 从订单中减少宠物
	 * @param goods 要减少的宠物
	 * @param order 订单
	 * @return 如果订单中的宠物空了返回true, 否则返回false
	 */
	boolean lessenGoodsFromOrder(Goods goods, Order order);
	
	/**
	 * 从订单中删除购买项
	 * @param goods 要删除的宠物
	 * @param order 订单
	 * @return 如果订单中的宠物空了返回true, 否则返回false
	 */
	boolean deleteGoodsFromOrder(Goods goods, Order order);
	
	
	/**
	 * 添加订单
	 * @param order 订单
	 * @return 添加成功返回true,添加失败返回false
	 */
	boolean addOrder(Order order);
	
	/**
	 * 根据订单信息查询订单的id
	 * @param order 订单
	 * @return 返回订单id
	 */
	int getIdByOrder(Order order);
	
	
	/**
	 * 根据订单id查询订单
	 * @param orderId 订单id
	 * @return 返回订单
	 */
	Order getOrderById(int orderId);
	
	/**
	 * 更新订单信息
	 * @param order 订单
	 * @return 更新成功返回true,更新失败返回false
	 */
	boolean updateOrder(Order order);
	
	
	/**
	 * 根据用户的id查询用户所有订单
	 * @param userId 用户id
	 * @return 返回用户所有订单
	 */
	List<Order> getOrderListByUserId(int userId);
	
	/**
	 * 根据页码，每页条数查询订单列表
	 * @param page 页码
	 * @param size 每页条数
	 * @return 查询到的订单列表
	 */
	List<Order> getOrderList(int page, int size);
	
	/**
	 * 获取订单的总条数
	 * @return 返回订单的总条数
	 */
	long getOrderCount();
	
	/**
	 * 根据订单状态，页码，每页条数查询订单列表
	 * @param status 订单状态  1表示未付款，2表示已付款，3表示配送中，4表示已完成
	 * @param page 页码
	 * @param size 每页条数
	 * @return 返回查到的订单列表
	 */
	List<Order> getOrderList(int status, int page, int size);
	
	/**
	 * 根据订单状态获取订单数量
	 * @param status 订单状态  1表示未付款，2表示已付款，3表示配送中，4表示已完成
	 * @return 返回订单数量
	 */
	long getOrderCount(int status);
	
}
